﻿package ${clazz.package.name}
{
<#if importClassNameList ??><#list importClassNameList as t>	import ${t};
</#list></#if>

	[Bindable]
	[RemoteClass(alias="${clazz.name}")]
	
	public<#if true==abstractClass> /** abstract */</#if><#if true==finalClass> final</#if><#if true==dynamicClass> dynamic</#if> class ${clazz.simpleName}<#if superclass ??>
		extends
			${getActionScriptTypeName(superclass)}</#if><#if interfaceNames ??>
		implements <#list interfaceNames as t>
			${t}<#if t_has_next>, </#if></#list></#if>
	{
		<#if staticFields ??>
		<#list staticFields as field><#assign typeName = getActionScriptTypeName(field.type)>
		public static const ${field.name}:${typeName}=${getFieldValue(field)};
		</#list></#if>

		<#if memberFields ??>
		<#list memberFields as field><#assign typeName = getActionScriptTypeName(field.type)>
		private var _${field.name}:${typeName};
		</#list></#if>

		public function ${clazz.simpleName}()
		{
		}
		<#if memberFields ??>
		<#list memberFields as field><#assign typeName = getActionScriptTypeName(field.type)>

		public function get ${field.name}():${typeName}
		{
			return _${field.name};
		}

		public function set ${field.name}(value:${typeName}):void
		{
			_${field.name} = value;
		}
		</#list></#if>
<#--
		override public function get hessianTypeName():String
		{
			return "${clazz.name}";
		} -->
	}
}